/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ngc;

import edu.ucue.ptc.gco.dao.VisitaDAOLocal;
import edu.ucue.ptc.gco.mdl.Visita;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.IdDuplicadoException;
import edu.ucue.ptc.gco.util.ValidarAtributoUtil;
import edu.ucue.ptc.gco.util.VisitaValidadorException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateful;
import javax.inject.Inject;
import javax.inject.Named;

/**
 *
 * @author Andrea
 */
@Stateful
@Named(value="visitaManager")
public class VisitaManager implements VisitaManagerLocal{
    @Inject
    private VisitaDAOLocal visitaDao;
    @Override
    public void eliminar(Visita visita) {
        visitaDao.eliminarc(visita.getIdVisita()+"");
    }

    @Override
    public List<Visita> listarTodos() {
        return visitaDao.listarTodos();
    }

    @Override
    public Visita obtenerPorId(int idVisita) {
        return visitaDao.obtenerPorId(idVisita);
    }

    @Override
    public void actualizar(Visita visita) throws AtributoInvalidoException {
        ValidarAtributoUtil.validarStringNuloVacio("detalleVisita", visita.getDetalleVisita());
        ValidarAtributoUtil.validarObjetoNulo("idRuta", visita.getRuta());
        ValidarAtributoUtil.validarStringNuloVacio("latitud", visita.getLatitud()+"");
        ValidarAtributoUtil.validarStringNuloVacio("longitud", visita.getLongitud()+"");
        visitaDao.actualizar(visita);
    }

    @Override
    public void crear(Visita visita) throws AtributoInvalidoException {
        
        ValidarAtributoUtil.validarStringNuloVacio("detalleVisita", visita.getDetalleVisita());
        ValidarAtributoUtil.validarObjetoNulo("idRuta", visita.getRuta());
        ValidarAtributoUtil.validarStringNuloVacio("latitud", visita.getLatitud()+"");
        ValidarAtributoUtil.validarStringNuloVacio("longitud", visita.getLongitud()+"");
        ValidarAtributoUtil.validarObjetoNulo("idPersonas", visita.getPersona());
        Visita v = new Visita(); 
        v=obtenerPorId(v.getIdVisita());
        if (v == null) {
            visitaDao.crear(visita);
        } else {
            try {
                throw new VisitaValidadorException(new IdDuplicadoException("Error. Ruta con id repetido", String.valueOf(v.getIdVisita())));
            } catch (VisitaValidadorException ex) {
                Logger.getLogger(VisitaManager.class.getName()).log(Level.SEVERE, null, ex);
            }       
        }
    }
}
